package myreflect5;

import java.io.*;
import java.lang.reflect.Field;
import java.util.Properties;

/**
 * @Author:Cjj
 * @Date:2025/5/6
 * MyReflectDemo
 */
public class MyReflectDemo {
    public static void main(String[] args) throws IOException {
        /**
         * 反射可以跟配置文件结合的方式,动态的创建对象,并调用方法
         */

        //1.读取配置文件中的信息
        Properties prop = new Properties();
        FileInputStream stream = new FileInputStream("myreflect\\prop.properties");
       prop.load(stream);
       stream.close();
       System.out.println(prop);


    }


    //把对象里面所有的成员变量名和值保存到本地文件中
    public static void saveObject(Object obj) throws IllegalAccessException, IOException{
        //1.获取字节码文件的对象
        Class clazz = obj.getClass();

        //创建IO流
        BufferedWriter bw = new BufferedWriter(new FileWriter("D:\\java_project\\ClassAndObject\\src\\test\\GIT"));

        //2.获取所有的成员变量
        Field[] fields = clazz.getDeclaredFields();
        for (Field field : fields) {
            field.setAccessible(true);
            //获取成员变量的名字
            String name = field.getName();
            //获取成员变量的值
            Object value = field.get(obj);
            //写出数据
            bw.write(name+"="+value);
            bw.newLine();

        }


    }

}
